import greenfoot.*;

/**
 * Esta clase representa la gorra que lanza el jugador.
 * 
 * @author Daniel Sánchez Ovalle
 * @author Christian Andres Alcantar Noyola
 * @version 29-04-2013
 */
public class Gorra extends Actor
{
    private String direccion;
    private GreenfootImage imagenes[]=new GreenfootImage[7];
    private int noImagen;

    /**
     * Este es el constructor de la clase gorra, aqui se cargan las imagenes de la gorra.
     * @param direcc recibe una direccion que puede ser derecha o izquierda
     */
    public Gorra(String direcc)
    {
        direccion=direcc;
        noImagen=0;
        this.cargaImagenes();
    }

    /**
     * Este metodo revisa constantemente si la cachucha a golpeado a un enemigo
     */
    public void act()
    {
        if(!this.revisaEliminar())
            this.mover();
    }

    /**
     * Este metodo carga las imagenes de la cachucha
     */
    public void cargaImagenes()
    {
        for(int i=0; i<7; i++)
        {
            imagenes[i]=new GreenfootImage("aventarcachuca"+(i+1)+".png");
        }
    }

    /**
     * Este metodo mueve la cachucha en el escenario hacia la izquierda, derecha o arriba
     */
    public void mover()
    {
        noImagen=(noImagen+1)%28;
        this.setImage(imagenes[noImagen/4]);
        if(direccion=="arriba")
        {
            this.setLocation(this.getX(),this.getY()-4);
        }
        else
        {
            if(direccion=="derecha")
            {
                this.setLocation(this.getX()+4,this.getY());
            }
            else
            {
                this.setLocation(this.getX()-4,this.getY());
            }
        }
    }

    /**
     * este metodo identifica si la cachuca toco con un enemigo, y si es asi elimina tanto al
     * enemigo como a la cachucha.
     * @return boolean (true si la cachucha se elimino, false si todavia esta en el escenario)
     */
    public boolean revisaEliminar()
    {
        Escenario1 mundo=(Escenario1)this.getWorld();
        Enemigo enem=(Enemigo)this.getOneIntersectingObject(Enemigo.class);
        if(enem!=null)
        {
            if(enem instanceof Lava == false)
            {//enem.restaCont();
                mundo.removeObject(enem);
                mundo.restaNumEnem();
            }
            mundo.removeObject(this);
            mundo.cambiaBandGorra(false);
            return true;
        }

        if(this.getY()<=60)
        {
            mundo.removeObject(this);
            mundo.cambiaBandGorra(false);
            return true;
        }

        if(this.getX()>=700 || this.getX()<=0)
        {
            mundo.removeObject(this);
            mundo.cambiaBandGorra(false);
            return true;
        }
        return false;
    }

}
